⚡ ProfiELEKTRO
Profesionální oceňovací systém pro elektromontáže
v1.0 Pro
0
Položek prací
0
Položek materiálu
0 Kč
Hodnota nabídky
0
Položek v nabídce

Databáze

  • 🔨 Montážní práce
  • 📦 Materiál
  • ⭐ Vlastní ceník

Velkoobchody

  • 🔌 SONEPAR
  • 🔌 ELFETEX
  • 🔌 K&V ELEKTRO

📋 Vytváření cenové nabídky

Položky nabídky

Přidat položku do nabídky

Import ceníků

📁 Přetáhněte soubor nebo klikněte

Podporované formáty: XLSX, CSV, JSON

Formát souboru:

ELFETEX ceník OCEP: Automaticky rozpoznán
Excel/CSV: Sloupce - Název, Kategorie, Jednotka, Cena, DPH
JSON: {items: [{name, category, unit, price, vat}]}

📱 Nainstalovat ProfiELEKTRO
Přidejte aplikaci na plochu pro rychlý přístup
// === PŘIDANÉ FUNKCE PRO V1.1 === // Globální proměnné pro stránkování window.currentPage = 1; window.itemsPerPage = 100; window.totalFilteredItems = 0; // Funkce pro změnu stránky window.changePage = function(newPage) { const totalPages = Math.ceil(window.totalFilteredItems / window.itemsPerPage); if (newPage < 1 || newPage > totalPages) return; window.currentPage = newPage; if (typeof filterItems === 'function') filterItems(); window.scrollTo({ top: 0, behavior: 'smooth' }); }; // Funkce pro změnu počtu položek na stránku window.changeItemsPerPage = function(newLimit) { window.itemsPerPage = parseInt(newLimit); window.currentPage = 1; if (typeof filterItems === 'function') filterItems(); }; // Funkce pro vykreslení stránkování window.renderPagination = function(totalItems) { window.totalFilteredItems = totalItems; const totalPages = Math.ceil(totalItems / window.itemsPerPage); let paginationHTML = '
'; const start = (window.currentPage - 1) * window.itemsPerPage + 1; const end = Math.min(window.currentPage * window.itemsPerPage, totalItems); paginationHTML += '
Zobrazeno ' + start + '-' + end + ' z ' + totalItems.toLocaleString() + ' položek
'; paginationHTML += '
'; paginationHTML += ''; paginationHTML += '
'; if (totalPages > 1) { paginationHTML += '
'; paginationHTML += ''; const maxVisible = 7; let startPage = Math.max(1, window.currentPage - 3); let endPage = Math.min(totalPages, startPage + maxVisible - 1); if (startPage > 1) { paginationHTML += ''; if (startPage > 2) paginationHTML += '...'; } for (let i = startPage; i <= endPage; i++) { const btnClass = i === window.currentPage ? 'btn-primary' : 'btn-outline'; paginationHTML += ''; } if (endPage < totalPages) { if (endPage < totalPages - 1) paginationHTML += '...'; paginationHTML += ''; } paginationHTML += ''; paginationHTML += '
'; } return paginationHTML; };